package com.ruoyi.opportunities.domain;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 商机管理对象 business_opportunities
 * 
 * @author suoge
 * @date 2025-10-21
 */
public class BusinessOpportunities extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 商机ID */
    private Long opportunityId;

    /** 关联线索ID（可空，用于追溯来源） */
    @Excel(name = "关联线索ID", readConverterExp = "可=空，用于追溯来源")
    private Long leadId;

    /** 商机名称 */
    @Excel(name = "商机名称")
    private String opportunityName;

    /** 客户名称 */
    @Excel(name = "客户名称")
    private String customerName;

    /** 预估金额 */
    @Excel(name = "预估金额")
    private BigDecimal estimatedAmount;

    /** 商机阶段：初步接触、需求确认、方案制定、商务谈判、合同签订 */
    @Excel(name = "商机阶段：初步接触、需求确认、方案制定、商务谈判、合同签订")
    private String stage;

    /** 成功概率（%） */
    @Excel(name = "成功概率", readConverterExp = "%=")
    private Integer probability;

    /** 预计成交日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "预计成交日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date expectedCloseDate;

    /** 负责人 */
    @Excel(name = "负责人")
    private String responsiblePerson;

    public void setOpportunityId(Long opportunityId) 
    {
        this.opportunityId = opportunityId;
    }

    public Long getOpportunityId() 
    {
        return opportunityId;
    }

    public void setLeadId(Long leadId) 
    {
        this.leadId = leadId;
    }

    public Long getLeadId() 
    {
        return leadId;
    }

    public void setOpportunityName(String opportunityName) 
    {
        this.opportunityName = opportunityName;
    }

    public String getOpportunityName() 
    {
        return opportunityName;
    }

    public void setCustomerName(String customerName) 
    {
        this.customerName = customerName;
    }

    public String getCustomerName() 
    {
        return customerName;
    }

    public void setEstimatedAmount(BigDecimal estimatedAmount) 
    {
        this.estimatedAmount = estimatedAmount;
    }

    public BigDecimal getEstimatedAmount() 
    {
        return estimatedAmount;
    }

    public void setStage(String stage) 
    {
        this.stage = stage;
    }

    public String getStage() 
    {
        return stage;
    }

    public void setProbability(Integer probability) 
    {
        this.probability = probability;
    }

    public Integer getProbability() 
    {
        return probability;
    }

    public void setExpectedCloseDate(Date expectedCloseDate) 
    {
        this.expectedCloseDate = expectedCloseDate;
    }

    public Date getExpectedCloseDate() 
    {
        return expectedCloseDate;
    }

    public void setResponsiblePerson(String responsiblePerson) 
    {
        this.responsiblePerson = responsiblePerson;
    }

    public String getResponsiblePerson() 
    {
        return responsiblePerson;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("opportunityId", getOpportunityId())
            .append("leadId", getLeadId())
            .append("opportunityName", getOpportunityName())
            .append("customerName", getCustomerName())
            .append("estimatedAmount", getEstimatedAmount())
            .append("stage", getStage())
            .append("probability", getProbability())
            .append("expectedCloseDate", getExpectedCloseDate())
            .append("responsiblePerson", getResponsiblePerson())
            .append("createTime", getCreateTime())
            .append("updateTime", getUpdateTime())
            .append("remark", getRemark())
            .toString();
    }
}
